"""
基于 Process的多进程并发基础模型
    创建流程
    创建网络套接字
    等待客户端连接
    有客户端连接，则创建新的进程/线程具体处理客户端请求
    主进程/线程继续等待处理其他客户端连接
    如果客户端退出，则销毁对应的进程/线程
"""
from socket import *
from multiprocessing import Process
import sys

#服务器地址
HOST="0.0.0.0"
PORT=8888
ADDR=(HOST,PORT)

#处理客户端请求事件
def handle(connfd):
    while True:
        data=connfd.recv(1024).decode()
        if not data:
            break
        print(data)
        connfd.send(b"OK")
    connfd.close()


# 服务启动函数
def main():
     sock=socket()
     sock.bind(ADDR)
     sock.listen(10)
     print("Listen the port %d"%PORT)

     # 循环链接客户端
     while True:
         try:
             connfd,addr=sock.accept()
             print("Connfd from",addr)
         except KeyboardInterrupt:
             sock.close()
             sys.exit("服务结束")

             # 为客户端创建新的进程
         p=Process(target=handle,args=(connfd,),daemon=True)
         p.start()



if __name__ == '__main__':
    main()  #启动服务





















